namespace logMOD {
	int Pow(int x,int t, int P){int r=1;for(;t;t>>=1,x=1ll*x*x%P)if(t&1)r=1ll*r*x%P;return r;}
	map<int, int> x;

	int log_mod(int a, int b, int P) {  
		int m = (int)sqrt(P + 0.5), v, e = 1, i;
		v = Pow(Pow(a, m, P), P - 2, P);
		x.clear(); x[1] = 0;  
		for (int i = 1; i < m; i++) {  
			e = 1LL * e * a % P;  
			if (!x.count(e)) x[e] = i;
		}  
		for (int i = 0; i < m; i++) {  
			if (x.count(b)) return i * m + x[b];  
			b = 1LL * b * v % P;
		}  
		return -1;  
	}  
}
